Package-level declarations
Types
Hardcoded style table approximating an OpenMapTiles "basic" look. Covers the layer names commonly seen across OpenMapTiles, Maptiler v3, Mapbox v8, and Protomaps "basemaps" schemas.
Platform-specific ImageSource.ImageFactory that decodes the atlas PNG once (cached by atlas-identity) and crops the requested sub-rect on demand.
Platform-specific ImageSource.ImageFactory that decodes the atlas PNG once (cached by atlas-identity) and crops the requested sub-rect on demand.
Platform-specific ImageSource.ImageFactory that decodes the atlas PNG once (cached by atlas-identity) and crops the requested sub-rect on demand.
Platform-specific ImageSource.ImageFactory that decodes the atlas PNG once (cached by atlas-identity) and crops the requested sub-rect on demand.
Platform-specific ImageSource.ImageFactory that decodes the atlas PNG once (cached by atlas-identity) and crops the requested sub-rect on demand.
Batched line-stroke renderable for one MVT slippy tile.
Batched polygon-fill renderable for one MVT slippy tile.
Per-glyph baseline-following text label for one MVT LINESTRING feature. Each render-pass projects the polyline's geographic waypoints into screen space, runs the arc-length placer to produce one MvtCurvedTextPlacer.GlyphRun per repeat, then emits a single- character Label per glyph with its own rotation matching the local tangent.
Arc-length parameterised glyph placement along a polyline. Given a polyline in screen coordinates, a text string with its per-character advance widths in pixels, and a desired label-repeat interval, produces one GlyphRun per repeat position covering as much of the line as fits.
Decode the bytes of a Mapbox Vector Tile (MVT v2.1) into an MvtTile. Geometry stays in tile-local extent coordinates; conversion to lat/lon is MvtGeometry's job.
Typed entry-points for the most common expression shapes. These let DSL/style code stay concise; full Mapbox expressions still flow through MvtExpression subclasses directly.
Mapbox-style expression tree. Each node evaluates to T? against an EvalContext (current tile zoom + feature property map); null propagates when an upstream node has no value (e.g. Get on a missing property).
Parses Mapbox-GL JSON expression arrays into MvtExpression trees. Supports the subset documented on MvtExpression (literals + sources + comparisons + boolean + arithmetic + case/match/step + interpolate + coercion).
One feature. geometry is the raw MVT command stream (interleaved CommandIntegers and ParameterIntegers, all as packed uint32s) — pass to MvtGeometry to materialise into lat/lon points/lines/rings. tags holds keyIdx, valueIdx, ... pairs that index into the parent MvtLayer's MvtLayer.keys / MvtLayer.values.
Predicate over an MVT feature's inflated property map. Sealed so the matching set is known up front. Filters are pure data evaluated once per feature off the render thread (in MvtVectorLayer.toRenderables); construct via the companion factory methods or the DSL infix helpers ("kind" eq "motorway").
Convert the raw MVT command stream of an MvtFeature into lat/lon geometry for a slippy tile at (z, x, y) with the given extent (tile-coordinate resolution; conventionally 4096).
Per-tile bundle of Labels for one slippy tile, plus parallel priority and pixel-size arrays that the layer's cross-tile collision pass reads. The pass writes enabledMask; doRender then emits only the masked survivors. All collision / dedup / budget logic lives in MvtLabelCollider as one global pass per frame, so groups never collide per-tile.
Parser for a subset of the Mapbox GL Style Specification, producing an MvtRuleBasedStyle usable with MvtVectorLayer. The intent is "drop in a hand-authored style.json or a downloaded one from Maptiler/Mapbox and have it just work for typical basemap use cases" — not full spec fidelity.
Diagnostic overlay that reports the target layer's tile-cache and schema state. Useful during MVT style/source tuning — drop it next to the MvtVectorLayer in the engine's layer list and the corner of the viewport reports:
Payload exposed via earth.worldwind.PickedObject.userObject when a vector-tile feature is picked. Carries the original MVT layer name, geometry type, and (lazily) the inflated property map so an app can pickedObject.userObject as? MvtPickedFeature and read e.g. the feature's name or kind to drive an info panel.
Style backed by an ordered list of MvtStyleRules. For each feature, iterates rules in order and returns the first match's resolved attributes. The same first match's MvtStyleRule.zOrder is reported from zOrderFor.
Identifies which vector-tile schema a decoded MvtTile follows by inspecting its layer names. Useful for auto-selecting a compatible style — feeding an OpenMapTiles tile to a Shortbread style (or vice versa) produces a mostly-empty map because almost no layer names line up.
Mapbox sprite atlas: PNG bytes + JSON manifest. The PNG packs N icons into a single image and the manifest maps each icon name → its (x, y, width, height) sub-rectangle. The platform-specific iconFactory decodes the atlas once and crops per-icon on demand.
Fetches a Mapbox sprite atlas (<stem>.json manifest + <stem>.png packed image) from a URL stem and returns a populated MvtSpriteAtlas. The two fetches run sequentially — sprite endpoints typically serve both responses from the same edge node so concurrency doesn't save much round-trip time.
One icon's slice within a Mapbox-format sprite sheet: pixel rectangle within the atlas PNG plus optional pixelRatio (@2x / @3x HiDPI variants ship the same icon at integer scales of the base; the renderer divides by pixelRatio when sizing the on-screen Placemark).
Decides how each MVT feature should be drawn: for polygons and lines, what ShapeAttributes to apply; null skips the feature entirely.
Type-safe builder DSL for MvtRuleBasedStyle. Lets a style read as a flat list of declarations:
One declarative rule in an MvtRuleBasedStyle. Matches features by source layer name, optional filter over properties, and tile-zoom range, then resolves zoom-interpolated paint properties into a ShapeAttributes.
Decoded Mapbox Vector Tile — the flat in-memory shape of Tile { repeated Layer }. Each MvtLayer holds its own dictionary of property keys/values plus a list of features whose geometry stream is still in tile-local extent coordinates. Ring grouping, geometry-type- specific handling, and Mercator unprojection happen in MvtGeometry, not here.
Renders Mapbox Vector Tile (MVT) data as flat surface-draped polygons and polylines.
Convenience constructors for the most common expression shape — linear interpolation over (zoom, value) stops, or a constant. Each factory returns an MvtExpression that fits directly into a paint-property slot.
Hand-coded MvtStyle that approximates the palette of OpenTopoMap for MVT sources following the OpenMapTiles v3 schema (Versatiles, Maptiler, self-hosted OpenMapTiles). Reference implementation for the imperative-DSL approach — for the same look with zoom-interpolation and labels, use the rule-based OpenTopoMapRules instead.
URL-template-based HttpTileSource for Mapbox Vector Tile servers. The template uses {z}, {x}, {y} placeholders, matching the slippy-map convention used by every major vector-tile provider:
Properties
Low-priority dispatcher for the CPU-heavy MVT decode + tessellation, so the OS scheduler hands cores to the render/GL threads first. Background-priority threads on Android, MIN_PRIORITY on the JVM, plain default elsewhere. Shared process-wide; the per-layer assembly semaphore still bounds concurrency.
Low-priority dispatcher for the CPU-heavy MVT decode + tessellation, so the OS scheduler hands cores to the render/GL threads first. Background-priority threads on Android, MIN_PRIORITY on the JVM, plain default elsewhere. Shared process-wide; the per-layer assembly semaphore still bounds concurrency.
Low-priority dispatcher for the CPU-heavy MVT decode + tessellation, so the OS scheduler hands cores to the render/GL threads first. Background-priority threads on Android, MIN_PRIORITY on the JVM, plain default elsewhere. Shared process-wide; the per-layer assembly semaphore still bounds concurrency.
Low-priority dispatcher for the CPU-heavy MVT decode + tessellation, so the OS scheduler hands cores to the render/GL threads first. Background-priority threads on Android, MIN_PRIORITY on the JVM, plain default elsewhere. Shared process-wide; the per-layer assembly semaphore still bounds concurrency.
Low-priority dispatcher for the CPU-heavy MVT decode + tessellation, so the OS scheduler hands cores to the render/GL threads first. Background-priority threads on Android, MIN_PRIORITY on the JVM, plain default elsewhere. Shared process-wide; the per-layer assembly semaphore still bounds concurrency.
Functions
Factor converting earth.worldwind.render.Font.measureChars advances (logical pixels) into the units of the rendered glyph bitmaps and the projected screen polyline. On platforms whose TextRenderer density-scales the glyph bitmap and projects into a device-pixel viewport (JVM, iOS, web) this is RenderContext.densityFactor; on platforms that rasterise text at logical size (Android) it is 1.
Factor converting earth.worldwind.render.Font.measureChars advances (logical pixels) into the units of the rendered glyph bitmaps and the projected screen polyline. On platforms whose TextRenderer density-scales the glyph bitmap and projects into a device-pixel viewport (JVM, iOS, web) this is RenderContext.densityFactor; on platforms that rasterise text at logical size (Android) it is 1.
Factor converting earth.worldwind.render.Font.measureChars advances (logical pixels) into the units of the rendered glyph bitmaps and the projected screen polyline. On platforms whose TextRenderer density-scales the glyph bitmap and projects into a device-pixel viewport (JVM, iOS, web) this is RenderContext.densityFactor; on platforms that rasterise text at logical size (Android) it is 1.
Factor converting earth.worldwind.render.Font.measureChars advances (logical pixels) into the units of the rendered glyph bitmaps and the projected screen polyline. On platforms whose TextRenderer density-scales the glyph bitmap and projects into a device-pixel viewport (JVM, iOS, web) this is RenderContext.densityFactor; on platforms that rasterise text at logical size (Android) it is 1.
Factor converting earth.worldwind.render.Font.measureChars advances (logical pixels) into the units of the rendered glyph bitmaps and the projected screen polyline. On platforms whose TextRenderer density-scales the glyph bitmap and projects into a device-pixel viewport (JVM, iOS, web) this is RenderContext.densityFactor; on platforms that rasterise text at logical size (Android) it is 1.
Top-level DSL entry: build an MvtRuleBasedStyle.